package pwd.allen.importSelector;

import org.springframework.context.annotation.DeferredImportSelector;
import org.springframework.core.type.AnnotationMetadata;

/**
 * DeferredImportSelector接口是ImportSelector接口的子接口，该接口会在所有的@Configuration配置类（不包括自动化配置类，即spring.factories文件中的配置类）处理完成后运行；
 * 当选择器和@Conditional条件注解一起使用时是特别有用的，此接口还可以和接口Ordered或者@Ordered一起使用，定义多个选择器的优先级；
 *
 * 和ImportSelector的区别
 *  ImportSelector：在解析配置类时就顺带处理了ImportSelector类。
 *  DeferredImportSelector：在解析配置类时只是将其加入到一个容器中，等到所有的配置类都解析完成后才会处理
 *
 * @author pwd
 * @create 2023-03-11 14:16
 **/
public class MyDeferredImportSelector implements DeferredImportSelector {

    /**
     * 这个可以不重写，接口默认返回null，此时会默认使用DefaultDeferredImportSelectorGroup
     * @see org.springframework.context.annotation.ConfigurationClassParser.DefaultDeferredImportSelectorGroup
     * @return
     */
//    @Override
//    public Class<? extends Group> getImportGroup() {
//        return null;
//    }

    /**
     * 同ImportSelector.selectImports
     * @param importingClassMetadata
     * @return
     */
    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        return new String[0];
    }
}
